a11y: Update GtkSpinButton
authorMatthias Clasen <mclasen@redhat.com>
Fri, 17 Jul 2020 18:41:06 +0000 (14:41 -0400)
committerEmmanuele Bassi <ebassi@gnome.org>
Sun, 26 Jul 2020 19:31:15 +0000 (20:31 +0100)
Set the appropriate accessible role, and update
the value properties.

gtk/gtkspinbutton.c

index 00dae1a003b9427fae4848302d27b1da326190e9..f008fac0044a121588bf6502184bdf2df4073a2f 100644 (file)
@@ -549,6 +549,7 @@ gtk_spin_button_class_init (GtkSpinButtonClass *class)
 
   gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT);
   gtk_widget_class_set_css_name (widget_class, I_("spinbutton"));
+  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_SPIN_BUTTON);
 }
 
 static GtkEditable *
@@ -1069,9 +1070,16 @@ adjustment_changed_cb (GtkAdjustment *adjustment, gpointer data)
 {
   GtkSpinButton *spin_button = GTK_SPIN_BUTTON (data);
 
-  spin_button->timer_step = gtk_adjustment_get_step_increment (spin_button->adjustment);
+  spin_button->timer_step = gtk_adjustment_get_step_increment (adjustment);
 
   update_buttons_sensitivity (spin_button);
+
+  gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
+                                  GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, gtk_adjustment_get_upper (adjustment),
+                                  GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, gtk_adjustment_get_lower (adjustment),
+                                  GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, gtk_adjustment_get_value (adjustment),
+                                  -1);
+
   gtk_widget_queue_resize (GTK_WIDGET (spin_button));
 }
 
@@ -1251,6 +1259,10 @@ gtk_spin_button_value_changed (GtkAdjustment *adjustment,
 
   g_signal_emit (spin_button, spinbutton_signals[VALUE_CHANGED], 0);
 
+  gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
+                                  GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, gtk_adjustment_get_value (adjustment),
+                                  -1);
+
   update_buttons_sensitivity (spin_button);
 
   g_object_notify_by_pspec (G_OBJECT (spin_button), spinbutton_props[PROP_VALUE]);